Skip to content

Honor GH_AW_WORKFLOWS_DIR at all workflows-path join sites#32550

Merged
pelikhan merged 4 commits into
mainfrom
copilot/fix-gh-aw-workflows-dir-override
May 16, 2026
Merged

Honor GH_AW_WORKFLOWS_DIR at all workflows-path join sites#32550
pelikhan merged 4 commits into
mainfrom
copilot/fix-gh-aw-workflows-dir-override

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented May 16, 2026

GH_AW_WORKFLOWS_DIR was only partially respected: several production paths still hardcoded .github/workflows, causing resolution, directory creation, and not-found messaging to diverge from configured behavior. This change aligns all reported call sites with the existing constants.GetWorkflowDir() contract.

  • Path resolution + filesystem behavior

    • Replaced hardcoded filepath.Join(..., ".github", "workflows") with filepath.Join(..., constants.GetWorkflowDir()) in:
      • pkg/workflow/dispatch_workflow_file_resolver.go (actual dispatch target lookup)
      • pkg/cli/copilot_setup.go (directory creation + copilot-setup-steps.yml write path)
      • pkg/cli/init.go (ensureMaintenanceWorkflow early-exit/stat + scan root)
  • Validation messaging consistency

    • Updated not-found path construction in:
      • pkg/workflow/dispatch_workflow_validation.go
      • pkg/workflow/call_workflow_validation.go
    • Error output now reflects the configured workflows directory instead of always showing .github/workflows.
  • Focused override coverage

    • Added targeted tests to verify GH_AW_WORKFLOWS_DIR behavior in each affected runtime path:
      • dispatch-workflow resolution
      • call-workflow validation
      • copilot setup workflow generation
      • init maintenance workflow generation
// Before
searchDir := filepath.Join(repoRoot, ".github", "workflows")

// After
searchDir := filepath.Join(repoRoot, constants.GetWorkflowDir())

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login + "/" + .name x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login + "/" + .name 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh pr list --repo github/gh-aw --state all --author app/github-actions --search created:2026-05-11T23:58:00Z..2026-05-12T00:05:00Z --limit 1 --json number --jq .[0].number GOMOD GOMODCACHE ache/go/1.25.8/xremote.origin.url (http block)
  • https://api.github.com/orgs/owner/actions/secrets
    • Triggering command: /usr/bin/gh gh api /orgs/owner/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/owner/actions/secrets --jq .secrets[].name p8IQ/rXF5qqqC-2XGOINSECURE gh 64/bin/go /repos/actions/ggo --jq (http block)
  • https://api.github.com/orgs/test-owner/actions/secrets
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name -json (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name 575242659/001' 575242659/001' 64/bin/go /ref/tags/v9 --jq sv 5169962/b515/impGO111MODULE -c che/go-build/db/GOINSECURE infocmp 64/bin/go /ref/tags/v9 eutil.test de /opt/hostedtoolcGOPROXY (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv runs/20260516-052447-26277/test-remote.upstream.url -buildtags /usr/bin/gh l -ifaceassert -nilfunc GH_AW_DOCKER_HOST_PATH_PREFIX_A api ithub-script/git/ref/tags/v9.0.0 --jq ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -json GO111MODULE 64/bin/go ache/go/1.25.8/x64/pkg/tool/linu--jq (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 690250/b498/vet.cfg GOINSECURE GOMOD GOMODCACHE go env -json url /usr/bin/infocmp GOINSECURE GOMOD GOMODCACHE infocmp (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv 2447-26277/test--test.timeout=10m0s /tmp/go-build135-test.run=^Test 7927157/b282/vet-test.short=true GOSUMDB GOWORK 64/bin/go /opt/hostedtoolccurrent (local changes) -uns�� ithub-script/gitbase (original) /tmp/go-build135-L bject.type] | @tnew (upstream) /tmp/go-build185infocmp -trimpath 64/bin/go /opt/hostedtoolc/tmp/gh-aw-merge-1666497239/new.md (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env Onlymin-integrity_with_repos_array_c211302902/00remote.origin.url GO111MODULE /opt/hostedtoolcache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv g_.a 7927157/b216/vet.cfg g_.a GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/xorigin env WFJPApXnD GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ortcfg (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv 2447-26277/test-3205383515 -importcfg /usr/bin/git -s -w -buildmode=exe git init�� --bare url /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --get remote.upstream.url me: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -json GO111MODULE x_amd64/vet git conf�� user.email test@example.com /usr/bin/git -json GO111MODULE x_amd64/vet git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv agent-performanctest-logs/run-2 GO111MODULE 64/pkg/tool/linux_amd64/link OST_PATH_PREFIX_ARGS="--docker-host-path-prefix /tmp/gh-aw" fi echo "$GH_AW_DOCKER_HOST_PATH_PR GOMOD GOMODCACHE 64/pkg/tool/linu--jq -uns�� ll-sweep (enforce_all)' || 'round-robin' /tmp/go-build1357927157/b140/vet.cfg 64/pkg/tool/linux_amd64/link GOSUMDB GOWORK 64/bin/go 64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE FFiles,SFiles,Swapi GOMODCACHE ache/go/1.25.8/x--jq -uns�� 2447-26277/test-1265086332/.github/workflows /tmp/go-build1357927157/b091/vet.cfg 64/pkg/tool/linux_amd64/link GOSUMDB GOWORK 64/bin/go 64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv ai-moderator.md sRemoteWithRealGitbranch_with_hyphen3331976198/002/work 1/x64/bin/node GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linuremote.origin.url t-ha�� OKEN }} 7927157/b445/vet.cfg 1/x64/bin/node GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu-extld=gcc (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv -stringintconv url repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -json GO111MODULE 64/bin/go infocmp -1 xterm-color (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv -v /home/REDACTED/work/gh-aw/gh-aw/pkg/constants/engimain om/testowner/testrepo.git -json GO111MODULE x_amd64/vet git -C tagedFiles3384125215/001/workflow.md remote /usr/bin/git -json GO111MODULE x_amd64/vet git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv runs/20260516-052941-45061/test-2191676323 -buildtags /usr/lib/git-core/git url -ifaceassert -nilfunc /usr/lib/git-core/git --gi�� for-each-ref --format=%(objectname) /usr/bin/git npx prettier --wgit e/git 64/bin/go git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v9
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE hqfpYGnSOvoQ env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v9.0.0
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv ztjpMmrfP '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitmain_branch2066239156/001' (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE ache/node/24.14.1/x64/bin/node GOINSECURE GOMOD GOMODCACHE go t-35�� sistency_GoAndJavaScript42044563remote.origin.url GO111MODULE epo.git GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv -json stmain.go .cfg GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linuupstream -ato�� ExpressionCompiledOutput411527331/001 -buildtags 7927157/b479/importcfg.link -errorsas -ifaceassert -nilfunc f_2UH-V24CqcW/aLHNPvyDXauqBTmthworigin (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv 2447-26277/aw-manifest-legacy-3284989232 /tmp/go-build1357927157/b222/vet.cfg .yml -json GO111MODULE 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -uns�� /test1.md /test2.lock.yml (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv bility_SameInputSameOutput3598785973/001/stability-test.md -test.v=true .git -test.timeout=10infocmp -test.run=^Test -test.short=truexterm-color git t-86�� k/gh-aw/gh-aw/.github/workflows/agent-performanctest-logs/run-2 develop ache/node/24.14.1/x64/bin/node tcp:// ]]; then ls GO111MODULE 64/bin/go ache/node/24.14.1/x64/bin/node (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 1/x64/bin/node ker-host-path-prefix /tmp/gh-aw" fi echo "$GH_AW_DOCKER_HOST_PATH_PREFIX_ARGS" GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linuorigin -has�� vaScript1529328822/001/test-complex-frontmatter--test.timeout=10m0s -buildtags ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -errorsas -ifaceassert -nilfunc ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv agent-persona-explorer.md GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x--jq (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE ceutil.test GOINSECURE GOMOD GOMODCACHE ceutil.test 3579�� se 7927157/b450/vet.cfg 7927157/b334/vet.cfg -s -w -buildmode=exe /opt/hostedtoolcache/go/1.25.8/xTest User (http block)
  • https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linu--jq (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 1/x64/bin/node GOINSECURE GOMOD GOMODCACHE go t-ha�� SameOutput2167524555/001/stability-test.md GO111MODULE cfg GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/aws-actions/configure-aws-credentials/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/aws-actions/configure-aws-credentials/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv -stringintconv -tests (http block)
    • Triggering command: /usr/bin/gh gh api /repos/aws-actions/configure-aws-credentials/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv 2447-26277/test-slug-upstream-path-3439262402 /dev/null /usr/lib/git-core/git plate-expressionnode GO111MODULE 64/bin/go /usr/lib/git-cor--package-lock-only unpa�� --pack_header=2,3 l /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/aws-actions/configure-aws-credentials/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE /usr/bin/infocmp GOINSECURE GOMOD GOMODCACHE infocmp -1 xterm-color url /opt/hostedtoolcache/node/24.14.1/x64/bin/node GOSUMDB GOWORK 64/bin/go node (http block)
  • https://api.github.com/repos/azure/login/git/ref/tags/v2
    • Triggering command: /usr/bin/gh gh api /repos/azure/login/git/ref/tags/v2 --jq [.object.sha, .object.type] | @tsv /tmp/gh-aw-test-runs/20260516-052447-26277/test-source-field-variant-949683955 url 7927157/b529/vet.cfg -json GO111MODULE 64/bin/go git-upload-pack /tmp�� GOMODCACHE go /tmp/go-build1357927157/b527/sliceutil.test -json GO111MODULE 64/bin/go /tmp/go-build135--auto (http block)
    • Triggering command: /usr/bin/gh gh api /repos/azure/login/git/ref/tags/v2 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE /usr/bin/git GOINSECURE GOMOD GOMODCACHE git add . l (http block)
  • https://api.github.com/repos/docker/login-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv runs/20260516-052447-26277/test-927292047 config o.git remote.origin.urnode GO111MODULE 64/bin/go git t-16�� k/gh-aw/gh-aw/.github/workflows/ai-moderator.md /tmp/TestParseDefaultBranchFromLsRemoteWithRealGitbranch_with_hyphen3331976198/002/work 64/pkg/tool/linux_amd64/vet -json GO111MODULE 64/bin/go 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv 999 GO111MODULE cfg GOINSECURE GOMOD GOMODCACHE git-upload-pack /tmp�� GOPATH GOPROXY (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0.1.2
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv faultBranchFromLsRemoteWithRealG--workflow faultBranchFromLsRemoteWithRealGnonexistent-workflow-test-12345 7927157/b485/vet.cfg 70 --log-level 64/bin/go /opt/hostedtoolcache/go/1.25.8/x-f -ato�� runs/20260516-052447-26277/test--f -buildtags ache/go/1.25.8/x64/pkg/tool/linu-f url -ifaceassert -nilfunc ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv runs/20260516-052941-45061/test-source-field-variant-1400188603/-errorsas GO111MODULE d00f6eb333c93b17e8cd9ee30e8b9539-d GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE trepo.git GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv ons/secrets GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ortcfg -uns�� Onlymin-integrity_with_repos=public_2786589663/001 g/logger/logger.go ache/go/1.25.8/x64/pkg/tool/linux_amd64/link GOSUMDB GOWORK 64/bin/go ache/go/1.25.8/x64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE tartedAt,updatedAt,event,headBranch,headSha,displayTitle GOINSECURE GOMOD GOMODCACHE go env 2941-45061/test-remote.upstream.url GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linuremote.origin.url (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE tartedAt,updatedAt,event,headBranch,headSha,displayTitle GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -uns�� Onlymin-integrity_with_explicit_repo1602477443/001 /tmp/go-build1357927157/b039/vet.cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile GOSUMDB GOWORK 64/bin/go ache/go/1.25.8/x64/pkg/tool/linuremote.origin.url (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 1/x64/bin/node H_PREFIX_ARGS="--docker-host-path-prefix /tmp/gh-aw" fi echo "$GH_AW_DOCKER_HOST_PATH_PREFIX_AR GOMOD GOMODCACHE go t-ha�� Imports370073858remote.origin.url GO111MODULE cfg GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created >=2026-05-09 GOMOD GOMODCACHE 64/pkg/tool/linuremote.origin.url itma�� -json .cfg 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuTest User (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created >=2026-04-16 GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env p/smoke_test_22524436360.go GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linu--auto (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created >=2026-02-15 GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuAdd workflow (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuorigin env 1594599304/.github/workflows GO111MODULE essivefuncparams.test GOINSECURE GOMOD GOMODCACHE essivefuncparamsremote.origin.url (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1234567890
    • Triggering command: /usr/bin/gh gh api repos/{owner}/{repo}/actions/runs/1234567890 --jq {databaseId: .id, number: .run_number, url: .html_url, status: .status, conclusion: .conclusion, workflowName: .name, workflowPath: .path, createdAt: .created_at, startedAt: .run_started_at, updatedAt: .updated_at, event: .event, headBranch: .head_branch, -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api repos/{owner}/{repo}/actions/runs/1234567890 --jq {databaseId: .id, number: .run_number, url: .html_url, status: .status, conclusion: .conclusion, workflowName: .name, workflowPath: .path, createdAt: .created_at, startedAt: .run_started_at, updatedAt: .updated_at, event: .event, headBranch: .head_branch, unformatted=$(goGOINSECURE gh 64/bin/go json' --ignore-p/bin/sh --jq node node /opt�� prettier --check 64/bin/go --ignore-path .prettierignore /usr/lib/git-corrun go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuorigin (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name GO111MODULE txt GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet estl�� se 7927157/b022/vet.cfg 64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuremote.origin.url (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE x_amd64/link GOINSECURE GOMOD GOMODCACHE x_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 5N/gt4ZLvq5L6Lqqrev-parse env -json GO111MODULE 23765b69a574a1e0d803ee7bebd58f3e6e47795db18fdef5-d GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linu--auto (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuremote.origin.url (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env 34/001/test-frontmatter-with-nested-objects.md GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name GO111MODULE tartedAt,updatedAt,event,headBranch,headSha,displayTitle GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linustatus (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name mLsRemoteWithRealGitmaster_branch862827394/001' 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linurev-parse (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuorigin env 22/001/test-complex-frontmatter--test.timeout=10m0s GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env 34/001/test-fron--detach GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env 3519159214/.github/workflows GO111MODULE sole.test GOINSECURE GOMOD GOMODCACHE sole.test (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build1357927157/b469/cli.test /tmp/go-build1357927157/b469/cli.test -test.testlogfile=/tmp/go-build1357927157/b469/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /tmp/go-build423690250/b469/cli.test /tmp/go-build423690250/b469/cli.test -test.testlogfile=/tmp/go-build423690250/b469/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true w/js/**/*.json' go nly e/git sh -c npx prettier --wGOINSECURE e/git 64/bin/go /ref/tags/v9 64/pkg/tool/linuenv _modules/.bin/sh-json sh (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv 7927157/b558/scripts.test --jq 7927157/b558/importcfg.link -json GO111MODULE 64/bin/go 7D8RXanEmFBss/sX9FX53sm1OTZ6jdpo--jq -C ry=1 l 7927157/b558/_pkg_.a remote.upstream.infocmp 862827394/001' x_amd64/vet git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv user.email test@example.com repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } GOSUMDB GOWORK 64/bin/go git clon�� /tmp/TestParseDefaultBranchFromLsRemoteWithRealGitbranch_with_hyphen882674082/001 /tmp/TestParseDefaultBranchFromLsRemoteWithRealGitbranch_with_hyphen882674082/002/work /usr/bin/git "prettier" --wriinfocmp gh 64/bin/go git (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv se .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linutest@example.com (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linu--jq env -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv 1148864023/.github/workflows GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv 1148864023 GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv -json herFiles,CFiles,CgoFiles,CXXFiles,MFiles,HFiles,FFiles,SFiles,SwigFiles,SwigCXXFiles,SysoFiles,T-atomic x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v3.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE ofyHC6x1pI6q env -json GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env le-frontmatter.mremote.origin.url GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/issues/17
    • Triggering command: /usr/bin/gh gh api repos/github/gh-aw/issues/17 -tests /tmp/go-build1357927157/b515/vet.cfg -json k x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api repos/github/gh-aw/issues/17 node /hom�� 1996939164/001' 1996939164/001' 64/bin/go --ignore-path ../../../.prettienv (http block)
  • https://api.github.com/repos/google-github-actions/auth/git/ref/tags/v2
    • Triggering command: /usr/bin/gh gh api /repos/google-github-actions/auth/git/ref/tags/v2 --jq [.object.sha, .object.type] | @tsv user.email url ache/node/24.14.1/x64/bin/node -json GO111MODULE 64/bin/go git t-34�� k/gh-aw/gh-aw/.github/workflows/agent-persona-explorer.md origin 64/pkg/tool/linux_amd64/compile -json GO111MODULE 64/bin/go 64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/google-github-actions/auth/git/ref/tags/v2 --jq [.object.sha, .object.type] | @tsv tructions-test-2361174786/.github/workflows GO111MODULE git url GOMOD GOMODCACHE /opt/hostedtoolc--package-lock-only -ato�� UpdateDiscussionFieldEnforcement3933168644/001 -buildtags ps l -ifaceassert -nilfunc ps (http block)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv 618442468/.githu.github/workflows/test.md 7927157/b029/vet.cfg util.test GOINSECURE GOMOD GOMODCACHE util.test 3579�� se 7927157/b100/vet.cfg .cfg GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/xrepos/{owner}/{repo}/actions/runs/5/artifacts (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv 1602236294/.github/workflows GO111MODULE test GOINSECURE GOMOD GOMODCACHE test 2369�� 639021603 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE ionpins.test 3579�� ut1268776472/001 7927157/b110/vet.cfg 64/bin/go GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuremote.origin.url (http block)
  • https://api.github.com/repos/org/repo/pulls/1
    • Triggering command: /usr/bin/gh gh api repos/org/repo/pulls/1 go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api repos/org/repo/pulls/1 -tests /tmp/go-build423690250/b526/vet.cfg --write ../../../**/*.jsGOMOD 64/bin/go --ignore-path ../../../.prettienv sv node /hom�� --check **/*.cjs 64/bin/go **/*.json --ignore-path ../../../.pretti-bool go (http block)
  • https://api.github.com/repos/owner/repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/owner/repo/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/owner/repo/actions/secrets --jq .secrets[].name 0THj/MIzAYZUK085GOINSECURE infocmp 64/bin/go xterm-color ache/go/1.25.8/xenv _modules/.bin/no-json 5169962/b492/impGO111MODULE -c che/go-build/5d/GOINSECURE gh 64/bin/go /repos/actions/ginfocmp --jq ode_modules/.binxterm-color /opt/hostedtoolcGOPROXY (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo x_amd64/cgo GOINSECURE GOMOD GOMODCACHE x_amd64/cgo env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo -nolocalimports -importcfg /tmp/go-build1357927157/b513/importcfg -pack /tmp/go-build1357927157/b513/_testmain.go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-remote-workflow --limit 30 --repo owner/repo 64/pkg/tool/linutest@example.com env 1454157793/.github/workflows o ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/xremote1 (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name -c=4 -nolocalimports -importcfg /tmp/go-build1357927157/b512/importcfg -pack /home/REDACTED/work/gh-aw/gh-aw/pkg/logger/doc.go /home/REDACTED/work/gh-aw/gh-aw/pkg/logger/logger.go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name HFTS/7DVBZs9pjcIGOINSECURE x_amd64/compile 64/bin/go /repos/actions/ggo --jq odules/npm/node_-json 5169962/b510/impGO111MODULE -c che/go-build/f5/GOINSECURE gh 64/bin/go /repos/actions/g/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/link --jq /usr/bin/infocmp/tmp/go-build423690250/b517/parser.test /opt/hostedtoolc-importcfg (http block)
  • https://api.github.com/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch -json .cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x^remote\..*\.gh-resolved$ env -json GO111MODULE 1/x64/bin/node GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch 4154572059/.github/workflows GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuremote.origin.url env architecture-guardian.md GO111MODULE 1/x64/bin/node GOINSECURE GOMOD GOMODCACHE go (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI changed the title [WIP] Fix GH_AW_WORKFLOWS_DIR env override bypass at specific call sites Honor GH_AW_WORKFLOWS_DIR at all workflows-path join sites May 16, 2026
Copilot AI requested a review from gh-aw-bot May 16, 2026 05:32
This was referenced May 16, 2026
@pelikhan pelikhan marked this pull request as ready for review May 16, 2026 13:38
Copilot AI review requested due to automatic review settings May 16, 2026 13:38
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Aligns all workflow-directory path handling with constants.GetWorkflowDir() so GH_AW_WORKFLOWS_DIR consistently affects workflow lookup, directory creation, and validation reporting.

Changes:

  • Replaced remaining hardcoded .github/workflows joins with constants.GetWorkflowDir() across workflow validation/resolution and CLI helpers.
  • Added targeted tests to verify GH_AW_WORKFLOWS_DIR overrides for dispatch-workflow resolution, call-workflow validation, copilot setup generation, and init maintenance generation.
  • Updated resolver search directory to use the configured workflows directory.
Show a summary per file
File Description
pkg/workflow/dispatch_workflow_validation.go Uses configured workflows dir when constructing the “not found” base path (but still has hardcoded .github/workflows text in troubleshooting).
pkg/workflow/dispatch_workflow_validation_test.go Adds test ensuring dispatch-workflow validation resolves targets under GH_AW_WORKFLOWS_DIR.
pkg/workflow/dispatch_workflow_file_resolver.go Searches for workflow files under configured workflows directory (comments still mention .github/workflows).
pkg/workflow/call_workflow_validation.go Uses configured workflows dir for “not found” base path (but still has hardcoded .github/workflows text in troubleshooting).
pkg/workflow/call_workflow_validation_test.go Adds test ensuring call-workflow validation resolves targets under GH_AW_WORKFLOWS_DIR.
pkg/cli/init.go Uses configured workflows directory for maintenance workflow scan/root selection.
pkg/cli/init_test.go Adds test ensuring maintenance workflow is generated into the overridden workflows directory.
pkg/cli/copilot_setup.go Uses configured workflows directory for directory creation and write target (but YAML contents/messages still hardcode .github/workflows).
pkg/cli/copilot_setup_test.go Adds test ensuring copilot setup steps file is generated into the overridden workflows directory.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comments suppressed due to low confidence (1)

pkg/cli/copilot_setup.go:194

  • With workflowsDir now coming from constants.GetWorkflowDir(), the generated workflow content and user-facing strings should also honor the override. Currently generateCopilotSetupStepsYAML hardcodes ".github/workflows/copilot-setup-steps.yml" in the push.paths filter (and there are other hardcoded references in this file), so an overridden workflowsDir will produce a workflow whose contents point to the wrong path. Consider parameterizing the workflow path used in YAML/messages based on constants.GetWorkflowDir() to keep behavior consistent.
	// Create workflow directory if it doesn't exist.
	workflowsDir := constants.GetWorkflowDir()
	if err := os.MkdirAll(workflowsDir, constants.DirPermPublic); err != nil {
		return fmt.Errorf("failed to create workflows directory: %w", err)
	}
	copilotSetupLog.Printf("Ensured directory exists: %s", workflowsDir)

	// Write copilot-setup-steps.yml
	setupStepsPath := filepath.Join(workflowsDir, "copilot-setup-steps.yml")

  • Files reviewed: 9/9 changed files
  • Comments generated: 3

repoRoot := filepath.Dir(githubDir)
workflowsDir := filepath.Join(repoRoot, ".github", "workflows")
workflowsDir := filepath.Join(repoRoot, constants.GetWorkflowDir())
notFoundErr := fmt.Errorf("dispatch-workflow: workflow '%s' not found in %s\n\nChecked for: %s.md, %s.lock.yml, %s.yml\n\nTo fix:\n1. Verify the workflow file exists in .github/workflows/\n2. Ensure the filename matches exactly (case-sensitive)\n3. Use the filename without extension in your configuration", workflowName, workflowsDir, workflowName, workflowName, workflowName)
workflowsDir := filepath.Join(repoRoot, ".github", "workflows")
workflowsDir := filepath.Join(repoRoot, constants.GetWorkflowDir())

notFoundErr := fmt.Errorf("call-workflow: workflow '%s' not found in %s\n\nChecked for: %s.md, %s.lock.yml, %s.yml\n\nTo fix:\n1. Verify the workflow file exists in .github/workflows/\n2. Ensure the filename matches exactly (case-sensitive)\n3. Use the filename without extension in your configuration", workflowName, workflowsDir, workflowName, workflowName, workflowName)
Comment on lines 67 to +71
githubDir := filepath.Dir(currentDir) // .github
repoRoot := filepath.Dir(githubDir) // repo root

// Only search in .github/workflows (standard GitHub Actions location)
searchDir := filepath.Join(repoRoot, ".github", "workflows")
// Only search in the configured workflows directory.
searchDir := filepath.Join(repoRoot, constants.GetWorkflowDir())
@github-actions
Copy link
Copy Markdown
Contributor

🧪 Test Quality Sentinel Report

Test Quality Score: 75/100

⚠️ Acceptable — well-targeted behavioral tests with room for edge-case expansion.

Metric Value
New/modified tests analyzed 4
✅ Design tests (behavioral contracts) 4 (100%)
⚠️ Implementation tests (low value) 0 (0%)
Tests with error/edge cases 2 (50%)
Duplicate test clusters 0
Test inflation detected Yes (test lines >> production lines — expected for a small targeted fix)
🚨 Coding-guideline violations None

Test Classification Details

View per-test classification table
Test File Classification Issues Detected
TestEnsureCopilotSetupSteps_UsesWorkflowDirEnvOverride pkg/cli/copilot_setup_test.go ✅ Design Positive + negative assertion (no file at default path)
TestEnsureMaintenanceWorkflow_UsesWorkflowDirEnvOverride pkg/cli/init_test.go ✅ Design Positive + negative assertion (no file at default path)
TestValidateCallWorkflow_UsesWorkflowDirEnvOverride pkg/workflow/call_workflow_validation_test.go ✅ Design Happy-path only; no test for missing file or non-override case
TestDispatchWorkflowValidation_UsesWorkflowDirEnvOverride pkg/workflow/dispatch_workflow_validation_test.go ✅ Design Happy-path only; no test for missing file or non-override case

Score Breakdown

Component Points Earned Max
Behavioral Coverage (4/4 = 100%) 40 40
Error/Edge Case Coverage (2/4 = 50%) 15 30
Low Duplication (0 duplicate clusters) 20 20
Proportional Growth (inflation detected) 0 10
Total 75 100

i️ Inflation note: Test-to-production line ratio exceeds 2:1 for all changed files (e.g. init_test.go +58 lines vs init.go +1 line). This is expected — the fix was a minimal targeted change to join-site logic, and comprehensive end-to-end integration tests are the right choice here. This is not a concern.


Suggestions for Improvement

⚠️ TestValidateCallWorkflow_UsesWorkflowDirEnvOverride (pkg/workflow/call_workflow_validation_test.go)

Classification: Design test — verifies behavioral contract ✅
Suggestion: Consider adding a companion negative case: when GH_AW_WORKFLOWS_DIR is set but the lock file is absent from the override dir, validateCallWorkflow should return an error (not silently fall back to the default dir). This would guard against regression where the override is ignored silently.

⚠️ TestDispatchWorkflowValidation_UsesWorkflowDirEnvOverride (pkg/workflow/dispatch_workflow_validation_test.go)

Classification: Design test — verifies behavioral contract ✅
Suggestion: Same as above — a "file missing from override dir → error" case would confirm the override is respected at validation time, not just at lookup time.


Guideline Compliance

Check Status
//go:build !integration tag on all test files ✅ Present on all 4 files
No mock libraries (gomock, testify/mock, .EXPECT()) ✅ None found
Assertion messages present ✅ All assert.* calls include descriptive messages; stdlib t.Fatalf calls include format context

Language Support

Tests analyzed:

  • 🐹 Go (*_test.go): 4 tests — unit (//go:build !integration)
  • 🟨 JavaScript (*.test.cjs, *.test.js): 0 tests

Verdict

Check passed. 0% of new tests are implementation tests (threshold: 30%). All 4 tests verify observable behavioral contracts: files written to the expected paths, correct resolution of workflows from the environment-variable override. No coding-guideline violations detected.


📖 Understanding Test Classifications

Design Tests (High Value) verify what the system does:

  • Assert on observable outputs, return values, or state changes
  • Cover error paths and boundary conditions
  • Would catch a behavioral regression if deleted
  • Remain valid even after internal refactoring

Implementation Tests (Low Value) verify how the system does it:

  • Assert on internal function calls (mocking internals)
  • Only test the happy path with typical inputs
  • Break during legitimate refactoring even when behavior is correct
  • Give false assurance: they pass even when the system is wrong

Goal: Shift toward tests that describe the system's behavioral contract — the promises it makes to its users and collaborators.

References: §25963355688

🧪 Test quality analysis by Test Quality Sentinel · ● 5.8M ·

Draft generated by the Design Decision Gate. Documents the decision to
route all workflows-directory path joins through constants.GetWorkflowDir()
so the GH_AW_WORKFLOWS_DIR override is honored consistently.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

Commit pushed: c7d8567

🏗️ ADR gate enforced by Design Decision Gate 🏗️ · ● 6.1M

@github-actions
Copy link
Copy Markdown
Contributor

🏗️ Design Decision Gate — ADR Required

This PR adds 197 new lines in business-logic directories (pkg/cli/, pkg/workflow/), which crosses the gate's volume threshold (≥100). It does not currently link an Architecture Decision Record.

A draft ADR has been committed to your branch to help you get started:

📄 Draft: docs/adr/32550-honor-workflows-dir-at-all-path-join-sites.md

The draft was generated from the PR diff and PR body. It captures the decision (route every workflows-directory path join through constants.GetWorkflowDir()), two alternatives considered, and the trade-offs visible from the change.

What to do next

  1. Review the draft — it has one [TODO: verify] marker (the not-found error's remediation hint still references .github/workflows as a literal; confirm whether that is intentional).
  2. Fill in Deciders and add any context the AI could not infer (history, prior incident reports, related PRs).
  3. Reference the ADR in this PR body by adding a line such as:

    ADR: ADR-32550: Route All Workflows-Directory Path Joins Through constants.GetWorkflowDir()

  4. Promote the status from Draft to Proposed (or Accepted if pre-approved) once the content is reviewed.

Once an ADR is linked in the PR body, this gate will re-run and verify the implementation matches the decision.

📋 Why this PR triggered the gate
Signal Value
implementation label ❌ not set
Business-logic additions 197 lines (threshold: 100)
Custom .design-gate.yml config ❌ not present (defaults used)
Existing ADR linked ❌ none found

The gate fires on either the implementation label or business-logic volume. This PR hit the volume trigger — primarily through the new override tests in pkg/cli/copilot_setup_test.go, pkg/cli/init_test.go, pkg/workflow/dispatch_workflow_validation_test.go, and pkg/workflow/call_workflow_validation_test.go.

If this is purely a bug fix consolidating to an already-decided contract (constants.GetWorkflowDir()), you may want to mark the ADR Status: Accepted immediately and note in the Context section that it is documenting an existing convention rather than introducing a new one.

📋 Michael Nygard ADR Format Reference

An ADR must contain these four sections to be considered complete:

  • Context — What is the problem? What forces are at play?
  • Decision — What did you decide? Why?
  • Alternatives Considered — What else could have been done?
  • Consequences — What are the trade-offs (positive and negative)?

All ADRs are stored in docs/adr/ as Markdown files numbered by PR number (e.g., 32550-*.md for PR #32550).

🔒 This PR cannot merge until an ADR is linked in the PR body.

References:

🏗️ ADR gate enforced by Design Decision Gate 🏗️ · ● 6.1M ·

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot review all comments

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented May 16, 2026

@copilot review all comments

Addressed. I applied the actionable review threads in commit fcf74d3: updated both not-found “To fix” messages to reference the configured workflows directory, and updated resolver comments to remove stale .github/workflows assumptions. I also ran targeted workflow validation tests for these paths.

Copilot AI requested a review from pelikhan May 16, 2026 14:21
@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot lint go

@pelikhan pelikhan merged commit 0ad82de into main May 16, 2026
24 of 26 checks passed
@pelikhan pelikhan deleted the copilot/fix-gh-aw-workflows-dir-override branch May 16, 2026 14:33
Copilot stopped work on behalf of pelikhan due to an error May 16, 2026 14:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

GH_AW_WORKFLOWS_DIR env override silently bypassed at 5 filepath.Join sites

4 participants